home *** CD-ROM | disk | FTP | other *** search
- // ===============================================================
- // Vertex Program:
- // Description:
- // Last Update: 14/08/2003
- // Coder: Andrey Honich
- // ===============================================================
-
- #include "../CGVPMacro.csi"
-
- VS20Only
-
- VertAttributes { POSITION_3 TEXCOORD0_2 TANG_3X3 }
- MainInput { VIEWPROJ_MATRIX, LIGHT_POS, CAMERA_POS, ATTEN, LIGHT_MATRIX }
- DeclarationsScript
- {
- IN_T0_TANG
- OUT_T0_T1_LVT2_HVT3_T4_C0
- }
- PositionScript = PosCommon
- CoreScript
- {
- OUT.Tex0.xy = IN.TexCoord0.xy;
- OUT.Tex1.xy = IN.TexCoord0.xy;
- OUT.Tex4 = mul(LightMatrix, vPos);
-
- TANG_MATR
-
- float3 lVec = LightPos.xyz - vPos.xyz;
- float3 lightVec = mul(objToTangentSpace, lVec);
- OUT.LightVector.xyz = lightVec.xyz;
-
- // store normalized light vector
- float fiSqDist = rsqrt(dot(lVec, lVec));
- OUT.Color.xyz = PROC_ATTENVERT;
-
- // store normalized light vector
- float3 vVec = CameraPos.xyz - vPos.xyz;
- float3 viewVec = mul(objToTangentSpace, vVec);
-
- // compute half angle vector
- float3 halfAngleVector = normalize(viewVec) + normalize(lightVec);
-
- // transform light vector from object space to tangent space and pass it as a tex coords
- OUT.HalfAngleVector.xyz = halfAngleVector;
- }
-